System URL Pytigona bazuje na dispatcherze URL Django, dodając automatyzację i strukturę, która eliminuje ręczną konfigurację URL dla standardowych operacji CRUD.
Gdy zdefiniujesz model i skonfigurujesz widoki przez narzędzia programistyczne, Pytigon generuje wzorce URL automatycznie. Standardowy wzorzec to:
[app_name]/table/[TableName]/[base_filter]/[filter]/[target]/[view_type]/
| Segment | Przeznaczenie | Przykład |
|---|---|---|
app_name |
Nazwa aplikacji Django | tables_demo |
table/[TableName] |
Identyfikator modelu/tabeli | table/Album |
base_filter |
Filtr rekordu nadrzędnego (dla podlist) | 3 (ID nadrzędne) |
filter |
Ciąg filtra zapytania | active=true |
target |
Format wyjściowy | pdf, xlsx, json |
view_type |
Typ widoku | list, edit, add, tree |
Wzorzec URL Pytigona używa dopasowania wyrażeniem regularnym:
r'((?P<base_filter>[\w=*,;-]*)/|)
(?P<filter>[\w=*,;-]*)/
(?P<target>[\w_-]*)/
[_]?(?P<vtype>list|sublist|tree|get|gettree|table_action)/$'
Dla widoków, które nie pasują do standardowego wzorca CRUD, zdefiniuj wzorce URL w [app]/urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('custom-report/', views.CustomReportView.as_view(), name='custom_report'),
path('api/data/', views.api_data, name='api_data'),
]
| Typ widoku | Wzorzec URL | Metoda |
|---|---|---|
| List | .../list/ |
GET |
| Sublist | .../sublist/ |
GET |
| Tree | .../tree/ |
GET |
| Get (pojedynczy) | .../get/ |
GET |
| Add | .../[param]/add/ |
GET + POST |
| Edit | .../[id]/edit/ |
GET + POST |
| Delete | .../[id]/delete/ |
GET + POST |
| Table Action | .../table_action/ |
POST |
Segment target określa format wyjściowy:
| Target | Format | Content-Type |
|---|---|---|
| (pusty/domyślny) | Strona HTML | text/html |
pdf |
Dokument PDF | application/pdf |
odf |
Open Document | application/vnd.oasis.opendocument.text |
xlsx |
Excel | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
json |
JSON | application/json |
txt |
Czysty tekst | text/plain |
csv |
CSV | text/csv |
verXYZ |
HTML z przyrostkiem XYZ w nazwie szablonu | text/html |
Szablony używają znacznika Django {% url %} do odwrotnego rozwiązywania URL:
[a href="{% url 'myapp:album_list' %}"...View Albums]
[a href="{% url 'myapp:album_edit' object.id %}"...Edit Album]
Moduł href_action Pytigona dostarcza dodatkowe narzędzia manipulacji URL do programowego konstruowania złożonych ścieżek nawigacji.
Pytigon automatycznie obsługuje prefiksy poddomen/ścieżek wdrożenia. Zmienna kontekstu base_path jest zawsze dostępna w szablonach do konstruowania bezwzględnych URL: